#ifndef DRAWCLIENT_H
#define DRAWCLIENT_H
// 客户端
#include <QMainWindow>
#include <QMessageBox>
#include <tcpclient.h>
#include <connectdialog.h>

QT_BEGIN_NAMESPACE
namespace Ui { class DrawClient; }
QT_END_NAMESPACE

class DrawClient : public QMainWindow
{
    Q_OBJECT

public:
    explicit DrawClient(QWidget *parent = nullptr);
    ~DrawClient();
    // 关闭窗口
    void closeEvent(QCloseEvent *event);
    // 按 Return/Enter 键发送消息
    void keyPressEvent(QKeyEvent *event);
    // 设定连接信息
    void writeSettings();
    // 读取连接信息
    void readSettings();

private:
    Ui::DrawClient *ui;
    TcpClient *drawArea;
    ConnectDialog *dialog{};
    // 设定信息
    QSettings *connectSet;

private slots:
    // 设置画笔颜色
    void setPenColor();
    // 设置画笔粗细
    void setPenWidth();
    // 切换画笔
    void resetPen();
    // 切换橡皮
    void resetEraser();
    // 清空画板
    void clearScreenSlot();
    // 显示连接服务器的对话框
    void showConnectDialog();
    // 连接服务器
    void connectToServer();
    // 断开连接
    void disconnectFromServer();
    // 向消息列表添加消息
    void newMsgSlot(const QString& message);
    // 向用户列表添加用户
    void newUserSlot(const QString& name);
    // 更新剩余时间
    void timeLeftSlot(const QString& time);
    // 显示词语
    void newWordSlot(const QString& word);
    // 删除用户列表中已经离线的用户
    void userLeftSlot(int descriptor, const QString& name);
    // 有人猜对词语
    void beGuessedSlot(const QString& name);
    // 发送消息
    void sendWordSlot();
    // 弃权
    void giveUpSlot();
    // 取消画家资格
    void cancelPainterSlot();
    // 关于信息
    void aboutSlot();
};
#endif // DRAWCLIENT_H
